package com.sunyur.tailor.channel.service.inner.protocol.model;

import lombok.Data;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.List;

/**
 * @ClassName ListProtocolItemModel
 * @Description 获取协议行信息返回实体
 * @Author hao.tian
 * @Date 2021/5/12
 * @Version v1.0
 */
@Data
public class ListProtocolItemModel implements Serializable {


    private static final long serialVersionUID = -8068192509239192952L;
    /**
     * 协议id
     */
    private Long protocolId;

    /**
     * 协议行id
     */
    private Long protocolItemId;

    /**
     * 协议行号
     */
    private String protocolItemCode;

    /**
     * 流水号
     */
    private Long protocolItemSerialNumber;

    /**
     * 物料说明
     */
    private String materielDesc;

    /**
     * 外部协议行ID  （可为空，srm不用管）
     */
    private String outerProtocolItemId;

    /**
     * 品牌名称
     */
    private String brandName;

    /**
     * 行备注
     */
    private String itemRemark;

    /**
     * 物料名称
     */
    private String materielName;

    /**
     * 物料编码
     */
    private String materielCode;

    /**
     * 价格类型(1:单一价格、2:单订单阶梯价、3:累计阶梯价)
     */
    private Integer priceType;

    /**
     * 所属商品分类code
     */
    private String categoryCode;

    /**
     * 所属商品分类（一般是电商平台的分类名，可能是1/2/3级，如：京东的某个3级分类）
     */
    private String categoryName;

    /**
     * 采购额上限（元，类似合同帽，协议行的上限）
     */
    private Integer amountUpperLimit;

    /**
     * 采购数上限
     */
    private Integer quantityUpperLimit;

    /**
     * 质保期
     */
    private String qualityAssurancePeriod;

    /**
     * 协议行类型 【0标准物料协议行, 1通用协议行，无物料信息】
     */
    private Integer protocolItemType;

    /**
     * 交期(天，从下单成功开始算起供应商应到货的天数)
     */
    private Integer deliveryDate;

    /**
     * 0原数据1新增2修改3删除  （3删除的协议行，不会从接口返回）
     */
    private Integer operateType;

    /**
     * 送货地区
     */
    private List<DeliveryAreaList> deliveryAreaList;
    @Data
    public static class DeliveryAreaList implements  Serializable{
        /**
         * 省编码
         */
        private String provinceCode;

        /**
         * 省名称
         */
        private String provinceName;

        /**
         * 城市编码
         */
        private String cityCode;

        /**
         * 城市名称
         */
        private String cityName;
    }

    /**
     *
     */
    private PriceRule priceRule;
    @Data
    public static class PriceRule implements Serializable{


        private static final long serialVersionUID = -1601164331716717932L;
        /**
         * 税点
         */
        private BigDecimal taxPoint;

        /**
         * 税点code
         */
        private String taxCode;

        /**
         * 起定量
         */
        private BigDecimal startQuantity;

        /**
         * 参考价（元）
         */
        private BigDecimal referencePrice;

        /**
         * 区域定价模型
         */
        private List<RegionPriceList> regionPriceList;
        @Data
        public static class RegionPriceList implements Serializable{


            private static final long serialVersionUID = -2145327301335681935L;
            /**
             *
             */
            private List<RegionList> regionList;
            @Data
            public static class RegionList implements  Serializable{


                private static final long serialVersionUID = -5555462072283240570L;
                /**
                 * 省编码
                 */
                private String provinceCode;

                /**
                 * 省名称
                 */
                private String provinceName;

                /**
                 * 城市编码
                 */
                private String cityCode;

                /**
                 * 城市名称
                 */
                private String cityName;
            }

            /**
             * 协议价(含税)
             */
            private BigDecimal price;

            /**
             * 未税价（元）
             */
            private BigDecimal untaxedPrice;

            /**
             * 阶梯起订起始量（阶梯价必填）
             */
            private BigDecimal startStepQuantity;

            /**
             * 阶梯起订截止量（阶梯价必填）
             */
            private BigDecimal endStepQuantity;
        }
    }

}
